package xin.clips.system.mapper.gy;

import org.apache.ibatis.annotations.Param;
import xin.clips.common.core.domain.entity.SysDept;
import xin.clips.system.domain.gy.GyKnowBaseType;

import java.util.List;

/**
 * 知识库类型Mapper接口
 *
 * @author yuanzy
 * @date 2023-02-28
 */
public interface GyKnowBaseTypeMapper {
    /**
     * 查询知识库类型
     *
     * @param id 知识库类型主键
     * @return 知识库类型
     */
    public GyKnowBaseType selectGyKnowBaseTypeById(Long id);

    /**
     * 查询知识库类型列表
     *
     * @param gyKnowBaseType 知识库类型
     * @return 知识库类型集合
     */
    public List<GyKnowBaseType> selectGyKnowBaseTypeList(GyKnowBaseType gyKnowBaseType);

    /**
     * 新增知识库类型
     *
     * @param gyKnowBaseType 知识库类型
     * @return 结果
     */
    public int insertGyKnowBaseType(GyKnowBaseType gyKnowBaseType);

    /**
     * 修改知识库类型
     *
     * @param gyKnowBaseType 知识库类型
     * @return 结果
     */
    public int updateGyKnowBaseType(GyKnowBaseType gyKnowBaseType);

    /**
     * 删除知识库类型
     *
     * @param id 知识库类型主键
     * @return 结果
     */
    public int deleteGyKnowBaseTypeById(Long id);

    /**
     * 批量删除知识库类型
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteGyKnowBaseTypeByIds(String[] ids);

    /**
     * 检查知识类型是否唯一
     *
     * @param knowBaseType 类型名称
     * @param parentId
     * @return
     */
    public GyKnowBaseType checkKnowBaseTypeUnique(GyKnowBaseType knowBaseType);



    /**
     * 检查知识库类型是否唯一
     *
     * @param id 知识库类型id

     * @return
     */
    public List<GyKnowBaseType> selectChildrenKnowTypeById(Long id);

    /**
     * 修改子元素关系
     *
     * @param knowBaseTypes 子元素
     * @return 结果
     */
    public int updateKnowTypeChildren(@Param("knowTypes") List<GyKnowBaseType> knowBaseTypes);
}
